#pragma once

#include "types.hpp"

namespace zuck
{
	inline auto constexpr null = nullptr;

	inline auto constexpr max_env_size = static_cast<size_t>(-1);

	inline auto constexpr uint8_max    = static_cast<u8_t>(-1);

	inline auto constexpr int8_max     = static_cast<i8_t>(uint8_max >> 1);

	inline auto constexpr uint16_max   = static_cast<u16_t>(-1);

	inline auto constexpr int16_max    = static_cast<i16_t>(uint16_max >> 1);

	inline auto constexpr uint32_max   = static_cast<u32_t>(-1);

	inline auto constexpr int32_max    = static_cast<i32_t>(uint32_max >> 1);

	inline auto constexpr uint64_max   = static_cast<u64_t>(-1);

	inline auto constexpr int64_max    = static_cast<i64_t>(uint64_max >> 1);

	inline auto constexpr int8_min     = static_cast<i8_t>(~int8_max);

	inline auto constexpr int16_min    = static_cast<i16_t>(~int16_max);

	inline auto constexpr int32_min    = static_cast<i32_t>(~int32_max);

	inline auto constexpr int64_min    = static_cast<i64_t>(~int64_max);
}

using ::zuck::null;

